/******************************************************************************/
/** @file    ../User/user_lib.c 
 ** @author  Oscar
 ** @version V2.1
 ** @date    2025-4-5
 ** @brief   user defined function library
 ******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include <stdio.h>

#include "user_lib.h"
/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/
 
/* Private variables ---------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
 *               Character Handling  字符处理
 ******************************************************************************/
/**
***********************************************************
 * @brief 计算字符串长度.0是结束符
 * @param _str : 缓冲区
***********************************************************
*/
int str_len(char *_str)
{
	int len = 0;

	while (*_str++) len++;
	return len;
}

/**
***********************************************************
 * @brief 复制字符串
 * @param _str : 缓冲区
 * @param  src : 源缓冲区
***********************************************************
*/
void str_cpy(char *_tar, char *_src)
{
	do
	{
		*_tar++ = *_src;
	}
	while (*_src++);
}

/**
***********************************************************
 * @brief 字符串比较
 * @param s1 : 字符串1
 * @param s2 : 字符串2
 * @return 0 表示相等 非0表示不等
***********************************************************
*/
int str_cmp(char * s1, char * s2)
{
	while ((*s1!=0) && (*s2!=0) && (*s1==*s2))
	{
		s1++;
		s2++;
	}
	return *s1 - *s2;
}

/**
***********************************************************
 * @brief 统一填充数据
 * @param tar : 目标缓冲区
 * @param src : 待填充的数据
***********************************************************
*/
void mem_set(char *_tar, char _data, int _len)
{
	while (_len--)
	{
		*_tar++ = _data;
	}
}
